---
title: 存储配置
description: 配置内存持久化的存储后端
---

LangCrew 内存管理支持多种存储提供商用于短期和长期记忆。根据您的部署环境和可扩展性需求选择合适的提供商。

## 概述

LangCrew内存管理支持多种存储提供商：

- **✅ 生产就绪**: `memory`, `sqlite`, `postgresql`, `mysql`
- **⚠️ 实验性**: `redis`, `mongodb`

## 存储提供商

### 内存存储

快速、临时的存储，用于开发和测试。重启后不持久化。

```python
from langcrew.memory import MemoryConfig

memory_config = MemoryConfig(
    provider="memory",  # 无持久化
    short_term={"enabled": True},
    long_term={"enabled": True},
)
```

**特点：**
- **速度**：最快
- **持久化**：无（重启后丢失）
- **适用于**：开发、测试、临时会话

### SQLite

基于文件的数据库，适用于单用户应用和开发。

```python
memory_config = MemoryConfig(
    provider="sqlite",
    connection_string="sqlite:///memory.db",
    short_term={"enabled": True},
    long_term={"enabled": True},
)
```

**连接字符串示例：**

```python
# 相对路径
"sqlite:///memory.db"

# 绝对路径
"sqlite:////var/data/memory.db"

# 内存中的 SQLite（仅测试用）
"sqlite:///:memory:"
```

**特点：**
- **速度**：快
- **持久化**：基于文件
- **适用于**：单用户应用、开发、本地部署

### PostgreSQL

可扩展、生产就绪的数据库，具有完整的 ACID 合规性。

```python
# PostgreSQL 配置
memory_config = MemoryConfig(
    provider="postgresql",
    connection_string="postgresql://user:password@localhost:5432/memory_db",
    short_term={"enabled": True},
    long_term={"enabled": True},
)
```

**连接字符串示例：**

```python
# 基本连接
"postgresql://user:password@localhost:5432/database"

# 指定模式
"postgresql://user:password@localhost:5432/database?schema=memory"


生产就绪的关系数据库，广泛采用。

```python
memory_config = MemoryConfig(
    provider="mysql",
    connection_string="mysql://user:password@localhost:3306/memory_db",
    short_term={"enabled": True},
    long_term={"enabled": True},
)
```

**特点：**
- **速度**：良好（取决于网络）
- **持久化**：持久
- **适用于**：生产、现有 MySQL 基础设施

### Redis（⚠️ 实验性）

高性能内存数据存储，具有可选持久化。

```python
memory_config = MemoryConfig(
    provider="redis",
    connection_string="redis://localhost:6379/0",
    short_term={"enabled": True},
    long_term={"enabled": True},
)
```

**连接字符串示例：**

```python
# 基本 Redis 连接
"redis://localhost:6379/0"

# 带认证的 Redis
"redis://:password@localhost:6379/0"

# 自定义数据库的 Redis
"redis://localhost:6379/2"
```

**⚠️ 状态**：实验性 - 未在生产环境中充分测试。

### MongoDB（⚠️ 实验性）

面向文档的 NoSQL 数据库。

```python
memory_config = MemoryConfig(
    provider="mongodb",
    connection_string="mongodb://localhost:27017/memory_db",
    short_term={"enabled": True},
    long_term={"enabled": True},
)
```

**⚠️ 状态**：实验性 - 未在生产环境中充分测试。

## 基于环境的配置

为不同环境配置不同的存储提供商：

```python
import os

def get_memory_config():
    env = os.getenv("ENVIRONMENT", "development")
    
    if env == "production":
        return MemoryConfig(
            provider="postgresql",
            connection_string=os.getenv("DATABASE_URL"),
            short_term={"enabled": True},
            long_term={"enabled": True},
        )
    elif env == "staging":
        return MemoryConfig(
            provider="postgresql",
            connection_string="postgresql://staging_user:pass@staging-db:5432/memory_staging",
            short_term={"enabled": True},
            long_term={"enabled": True},
        )
    else:  # development
        return MemoryConfig(
            provider="sqlite",
            connection_string="sqlite:///dev_memory.db",
            short_term={"enabled": True},
            long_term={"enabled": True},
        )

# 使用
memory_config = get_memory_config()
```

```python
# 好：使用环境变量
connection_string = os.getenv("DATABASE_URL")

# 不好：硬编码凭据
connection_string = "postgresql://admin:password123@localhost:5432/db"
```

### 安全连接字符串

```python
# PostgreSQL with SSL
"postgresql://user:pass@localhost:5432/db?sslmode=require"

# MySQL with SSL
"mysql://user:pass@localhost:3306/db?ssl=true"
```

## 故障排除

### 连接失败

- 验证数据库正在运行且可访问
- 检查连接字符串格式
- 确保数据库权限正确
- 验证数据库文件/连接可访问

### 性能问题

## 下一步

- **[短期记忆](/zh/guides/memory/short-term)** - 配置对话历史
- **[长期记忆](/zh/guides/memory/long-term)** - 配置持久知识
- **[内存概念](/zh/concepts/memory)** - 理解内存架构
